#ifndef __BSP_GPIO_H__
#define __BSP_GPIO_H__

#include "MCIMX6Y2.h"
#include "fsl_iomuxc.h"
#include "cc.h"


typedef enum _gpio_int_mode
{
	kGPIO_Noint 		 			= 0,
	kGPIO_LowInterrupt				= 1,
	kGPIO_HighInterrupt				= 2,
	kGPIO_RaisingEdgeInt			= 3,
	kGPIO_FalllingEdgeInt			= 4,
	kGPIO_FallingOrRaisingEdgeInt 	= 5,
} gpio_int_mode_t;

typedef enum _gpio_pin_direction
{
	kGPIO_DigitalOutput = 0U,	/*输出*/
	kGPIO_DigitalInput  = 1U,	/*输入*/
	
} gpio_pin_direction_t;

typedef struct _gpio_pin_config 
{
	gpio_pin_direction_t directioin;	/* GPIO 方向：输入还是输出 */
	int outputLogic; 					/* 如果是输出的话，默认输出电平 */
	gpio_int_mode_t intMode;			/* GPIO中断模式 */
} gpio_pin_config_t;


/* 初始化函数 */
void gpio_init(GPIO_Type *base, int pin, gpio_pin_config_t *config);
void gpio_pinwrite(GPIO_Type *base, int pin, int value);
int  gpio_pinread(GPIO_Type *base, int pin);

void gpio_intmode_config(GPIO_Type *base, int pin, gpio_int_mode_t mode);
void gpio_int_enable(GPIO_Type *base, int pin);
void gpio_int_disable(GPIO_Type *base, int pin);
void gpio_int_cleanFlag(GPIO_Type *base, int pin);

#endif
